home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / cdplay / src / cdpn.h < prev    next >
Text File  |  1991-10-18  |  12KB  |  333 lines

  1. /* << High C V1.4 >> **********************************************************
  2. **
  3. **    CD 演奏ライブラリを使用したプログラム用ヘッダ
  4. **
  5. **    1991.03.19 : CREATE
  6. **    1991.03.23 : FINISH
  7. **
  8. **    < HISTORY >
  9. **    1991.03.19 : CREATE
  10. **
  11. **    < note > : TABS = 4
  12. **
  13. **    All Rights Reserved, Copyright (C) Y.Hirata 1991.
  14. **
  15. **    Programmed by Y.Hirata ( Nifty ID : NAB03321 )
  16. **
  17. ******************************************************************************/
  18.  
  19. #include "cdda.h"
  20.  
  21. #define    ZERO        CDDA_ZERO
  22. #define    TRUE        CDDA_TRUE
  23. #define    FALSE        ZERO
  24. #define    DUMMY        ZERO
  25.  
  26. #undef    EX
  27. #ifdef _CDPN_MAIN                        /*  メインルーチン用                        */
  28.     #define    EX
  29. #else                                    /*  外部ルーチン用                        */
  30.     #define    EX        extern
  31. #endif
  32.  
  33. enum Values_for_Write_Mode {
  34.         PSET, PRESET, OR, AND, XOR, NOT, MATTE, PASTEL,            /*  0 ~ 7    */
  35.         DUMMY_1, OPAQUE, IMPSET, INPNOT, MASKSET, MASKRESET, MASKNOT
  36.                                                                 /*  8 ~ 15    */
  37.     } ;
  38.  
  39. #define    GworkSize    1536                        /*  グラフィック作業域のサイズ        */
  40. EX char    Gwork[GworkSize] ;                        /*  グラフィック作業域            */
  41. #define    SworkSize    16384                        /*  サウンド用作業域サイズ        */
  42. EX char    Swork[SworkSize];                        /*  サウンド用作業域            */
  43. #define    MworkSize    4096                        /*  マウス作業域のサイズ            */
  44. EX char    Mwork[MworkSize] ;                        /*  マウス作業域                */
  45.  
  46. EX char    *Wpagebuf ;                                /*  作業ページ領域            */
  47. #define    WPAGE        0x80                        /*  作業ページ                */
  48.  
  49. EX char    Textbuf[80] ;                            /*  文字表示用作業域        */
  50.  
  51. #define    EJECT_SND    "EJECT.SND"
  52. #define    RESET_SND    "RESET.SND"
  53. #define    STOP_SND    "STOP.SND"
  54. #define    EXIT_SND    "EXIT.SND"
  55. #define    EJECT_CH    71
  56. #define    RESET_CH    70
  57. #define    STOP_CH        69
  58. #define    EXIT_CH        68
  59.  
  60. #define    XCDOT        8                            /*  文字サイズ(x方向)            */
  61. #define    YCDOT        16                            /*  文字サイズ(y方向)            */
  62. #define    XCDOT7P        6                            /*  7ポ用文字サイズ(x方向)    */
  63. #define    YCDOT7P        7                            /*  7ポ用文字サイズ(y方向)    */
  64. #define    XCDOT9P        6                            /*  9ポ用文字サイズ(x方向)    */
  65. #define    YCDOT9P        9                            /*  9ポ用文字サイズ(y方向)    */
  66.  
  67. #define    MOS_LEFT    1                            /*  マウス左クリック                */
  68. #define    MOS_RIGHT    2                            /*  マウス右クリック                */
  69. #define    MOS_BOTH    3                            /*  マウス左右クリック                */
  70.  
  71. #define    CDC_WAIT    12                        /*  CDC アクセス待ち時間    240ms    */
  72. #define    PRG_WAIT    150                        /*  プログラム用曲表示時間 3.0sec    */
  73. #define    NOA_WAIT    9000                    /*  未アクセスチェック時間     180.0sec    */
  74.  
  75. EX long    Tcount1 ;                                /*  CDC ウェイト用            */
  76. EX long    Tcount2 ;                                /*  時間表示制御用        */
  77. EX long    Tcount3 ;                                /*  未アクセス時間チェック用    */
  78.  
  79. /*-----------------------------------------------------------------------------
  80. **    色番号定義
  81. -----------------------------------------------------------------------------*/
  82. enum Values_for_Write_Color {
  83.         C_BLACK,    C_BLUE,        C_RED,        C_PURPLE,
  84.         C_GREEN,    C_SKYBLUE,    C_YELLOW,    C_WHITE,
  85.         C_GRAY,        C_BLUEOFF,    C_GREENOFF,    C_GREENON,
  86.         C_REDOFF,    C_REDON,    C_LWHITE,    C_HWHITE
  87.     } ;
  88. /*-----------------------------------------------------------------------------
  89. **    パレット定義
  90. -----------------------------------------------------------------------------*/
  91. #ifdef _CDPN_MAIN                        /*  メインルーチン用                        */
  92.     unsigned char Palette[16][3]= {/* B   R   G : 上位 4ビット    */
  93.     /*    00    */                          0,  0,  0,    /*  C_BLACK        (NORMAL)*/
  94.     /*    01    */                        176,  0,  0,    /*  C_BLUE        (NORMAL)*/
  95.     /*    02    */                          0,176,  0,    /*  C_RED                */
  96.     /*    03    */                        176,176,  0,    /*  C_PURPLE    (NORMAL)*/
  97.     /*    04    */                          0,  0,208,    /*  C_GREEN                */
  98.     /*    05    */                        176,  0,176,    /*  C_SKYBLUE    (NORMAL)*/
  99.     /*    06    */                          0,208,208,    /*  C_YELLOW            */
  100.     /*    07    */                        192,192,192,    /*  C_WHITE                */
  101.     /*    08    */                         80, 80, 80,    /*  C_GRAY                */
  102.     /*    09    */                         64,  0,  0,    /*  C_BLUEOFF            */
  103.     /*    10    */                          0,  0, 64,    /*  C_GREENOFF            */
  104.     /*    11    */                          0,  0,255,    /*  C_GREENON            */
  105.     /*    12    */                          0, 64,  0,    /*  C_REDOFF            */
  106.     /*    13    */                          0,255,  0,    /*  C_REDON                */
  107.     /*    14    */                        128,128,128,    /*  C_LWHITE            */
  108.     /*    15    */                        255,255,255        /*  C_HWHITE    (NORMAL)*/
  109.                              } ;
  110. #else                                    /*  外部ルーチン用                        */
  111.     EX unsigned char Palette[16][3] ;
  112. #endif
  113.  
  114. /*-----------------------------------------------------------------------------
  115. **    表示色定義
  116. -----------------------------------------------------------------------------*/
  117. #define    COLOR_TITLE            C_GREENON
  118. #define    COLOR_ERROR            C_REDON
  119. #define    COLOR_WARNING        C_YELLOW
  120. #define    COLOR_TITLE_BACK    C_BLUEOFF
  121. #define    COLOR_SCREEN_BACK    C_LWHITE
  122. #define    COLOR_SWITCH_WORD    C_BLACK
  123. #define    COLOR_INFO_BOX0        C_BLACK
  124. #define    COLOR_INFO_BOX1        C_HWHITE
  125. #define    COLOR_INFO_TITLE    C_GREEN
  126. #define    COLOR_INFO_ON        C_WHITE
  127. #define    COLOR_INFO_OFF        C_GRAY
  128. #define    COLOR_INFO_TAPE        C_YELLOW
  129. #define    COLOR_INFO_DATA        C_BLUEOFF
  130. #define    COLOR_INFO_TOTAL    C_GREENON
  131. #define    COLOR_INFO_BACK        C_LWHITE
  132. #define    COLOR_TIME_BOX0        C_BLACK
  133. #define    COLOR_TIME_BOX1        C_HWHITE
  134. #define    COLOR_TIME            C_HWHITE
  135. #define    COLOR_TIME_PROG        C_REDON
  136. #define    COLOR_TIME_DISC        C_GREEN
  137. #define    COLOR_TIME_INFO        C_WHITE
  138. #define    COLOR_TIME_MUSIC    C_GREENON
  139. #define    COLOR_TIME_PRG        C_YELLOW
  140. #define    COLOR_TIME_BACK        C_GREENOFF
  141. #define    COLOR_MODE_PROGRAM    C_REDON
  142. #define    COLOR_MODE_SINGLE    C_YELLOW
  143. #define    COLOR_MODE_CONTINUE    C_GREENON
  144. #define    COLOR_EVOL_BACK        C_GRAY
  145. #define    COLOR_EVOL_MUTE        C_YELLOW
  146. #define    COLOR_EVOL_MAX        C_REDON
  147. #define    COLOR_EVOL_MIN        C_BLUEOFF
  148. #define    COLOR_EVOL            C_REDON
  149. #define    COLOR_XOR            C_GREENOFF
  150.  
  151. /*-----------------------------------------------------------------------------
  152. **    構造体定義
  153. -----------------------------------------------------------------------------*/
  154. struct _XY_POINT {
  155.     short    x, y ;
  156. } ;
  157. struct _POSITION {
  158.     struct _XY_POINT    s ;                        /*  左上座標    */
  159.     struct _XY_POINT    e ;                        /*  右下座標    */
  160. } ;
  161.  
  162. /*-----------------------------------------------------------------------------
  163. **    スイッチ定義(座標定義)
  164. -----------------------------------------------------------------------------*/
  165. #define    SWPOINT        17                            /*  スイッチの数                */
  166. #define    SWVAL        (CDDA_MAX_TRACK+10)            /*  スイッチと曲番号認識用        */
  167.  
  168. enum Values_for_Switch {
  169.         SW_EXIT,    SW_TIME,    SW_CHECK,    SW_CLEAR,
  170.         SW_SHUFFLE,    SW_REPEAT,    SW_STOP,    SW_PLAY,
  171.         SW_REWMUSIC,SW_REWTIME,    SW_PAUSE,    SW_FFTIME,
  172.         SW_FFMUSIC,    SW_PROGRAM,    SW_SINGLE,    SW_CONTINUE,
  173.         SW_ELEVOL
  174.     } ;
  175. #define    SW_TOTAL    (CDDA_MAX_TRACK+1)            /*  合計時間用(テープセレクト兼)    */
  176. #ifdef _CDPN_MAIN                        /*  メインルーチン用                        */
  177.     struct _POSITION Position[SWPOINT] = {
  178.             { {  8, 34}, { 31, 57} },                /*  EXIT        */
  179.             { { 40, 30}, {199, 77} },                /*  TIME        */
  180.             { {212, 36}, {259, 51} },                /*  CHECK        */
  181.             { {212, 56}, {259, 71} },                /*  CLEAR        */
  182.             { {268, 36}, {315, 51} },                /*  SHUFFLE        */
  183.             { {268, 56}, {315, 71} },                /*  REPEAT        */
  184.             { {324, 36}, {355, 71} },                /*  STOP        */
  185.             { {360, 36}, {391, 71} },                /*  PLAY        */
  186.             { {400, 36}, {423, 71} },                /*  REWMUSIC    */
  187.             { {428, 36}, {451, 71} },                /*  REWTIME        */
  188.             { {456, 36}, {479, 71} },                /*  PAUSE        */
  189.             { {484, 36}, {507, 71} },                /*  FFTIME        */
  190.             { {512, 36}, {535, 71} },                /*  FFMUSIC        */
  191.             { {544, 30}, {567, 53} },                /*  PROGRAM        */
  192.             { {576, 30}, {599, 53} },                /*  SINGLE        */
  193.             { {608, 30}, {631, 53} },                /*  CONTINUE    */
  194.             { {544, 66}, {631, 77} }                /*  ELEVOL        */
  195.     } ;
  196.     struct _XY_POINT PSTitle  = {  17,  6 } ;    /*  タイトル表示開始位置        */
  197.     struct _XY_POINT PSSwitch = {   0, 22 } ;    /*  スイッチボタン表示開始位置    */
  198.     struct _XY_POINT PSInf    = {  17, 85 } ;    /*  曲情報の表示開始位置    */
  199.     struct _XY_POINT SZInf    = { 606,358 } ;    /*  曲情報の表示サイズ        */
  200.     struct _XY_POINT PSMsg    = {  17,443 } ;    /*  メッセージの表示開始位置    */
  201.     struct _XY_POINT SZMsg    = { 606, 37 } ;    /*  メッセージの表示サイズ        */
  202. #else                                    /*  外部ルーチン用                        */
  203.     EX struct _POSITION Position[SWPOINT] ;
  204.     EX struct _XY_POINT PSTitle ;
  205.     EX struct _XY_POINT PSSwitch ;
  206.     EX struct _XY_POINT PSInf ;
  207.     EX struct _XY_POINT SZInf ;
  208.     EX struct _XY_POINT PSMsg ;
  209.     EX struct _XY_POINT SZMsg ;
  210. #endif
  211.  
  212. /*-----------------------------------------------------------------------------
  213. **    状態保持用グローバル変数(プログラム側で初期化すること)
  214. -----------------------------------------------------------------------------*/
  215. EX char    Swstat[SWPOINT] ;                        /*  スイッチのON/OFF状態        */
  216. EX char    Infstat[CDDA_MAX_TRACK] ;                /*  曲情報の表示状態        */
  217.  
  218. enum Values_for_Time_Mode {
  219.         TM_NODISP,                                /*  時間表示なし    */
  220.         TM_TR_CLOCK,                            /*  曲内経過時間    */
  221.         TM_TR_TIME,                                /*  曲内残り時間    */
  222.         TM_DISC_CLOCK,                            /*  ディスク内経過時間    */
  223.         TM_DISC_TIME,                            /*  ディスク内残り時間    */
  224.         TM_ALL                                    /*  全時間情報        */
  225.     } ;
  226. EX int    Timemode ;
  227. struct _FLG {
  228.     char    pause ;                        /*  PAUSE中か?                    */
  229.     char    repeat ;                    /*  リピートありか?                */
  230.     char    shuffle ;                    /*  シャッフル演奏中か?                */
  231.     char    playon ;                    /*  演奏を開始したのか?        */
  232.     char    program ;                    /*  プログラム演奏を開始したか?    */
  233.     char    prgchk ;                    /*  プログラム曲を確認中か?        */
  234.     char    mute ;                        /*  音出力をミュート中か?            */
  235.     char    mouse ;                        /*  マウス 表示中か?                */
  236.     char    tape ;                        /*  録音テープ選択済か?            */
  237. } ;
  238. EX struct _FLG    Flg ;                    /*  制御フラグ                        */
  239. EX int    Playmode ;                        /*  演奏モード                        */
  240.  
  241. EX int    Evol ;                            /*  電子ボリューム値                    */
  242. EX int    XORno ;                            /*  反転表示している曲番号            */
  243. EX int    Mosbot ;                        /*  マウス選択された時点のボタン            */
  244. EX int    Mosx ;                            /*  マウス選択された時点の水平座標        */
  245. EX int    Mosy ;                            /*  マウス選択された時点の垂直座標        */
  246.  
  247. EX int    Status ;                        /*  前回の演奏状態                    */
  248. EX int    Musicno ;                        /*  前回演奏していた曲番号            */
  249.  
  250. EX int    Dispno ;                        /*  表示した曲番号                    */
  251. EX int    Dispmin ;                        /*  表示した時間(分)                */
  252. EX int    Dispsec ;                        /*  表示した時間(秒)                */
  253. EX int    Dispmode ;                        /*  表示した時間モード                */
  254. EX int    Prgcnt[CDDA_MAX_TRACK] ;        /*  プログラム設定されたカウント値            */
  255. EX int    Prginf[CDDA_MAX_TRACK] ;        /*  プログラム設定された曲の演奏情報    */
  256.  
  257. /*-----------------------------------------------------------------------------
  258. **    プロトタイプ宣言
  259. -----------------------------------------------------------------------------*/
  260. /*
  261. **    CDPN.C
  262. */
  263. void palinit( void ) ;
  264. void timer_init( void ) ;
  265. void timer_end( void ) ;
  266. void valinit( void ) ;
  267. void mossetpos( int ) ;
  268. void init( void ) ;
  269. void mosloop( int,int *,int *,int * ) ;
  270. int tapeselecton( void ) ;
  271. int mosevent( int * ) ;
  272. void checkmusic( int ) ;
  273. void checkswitch( void ) ;
  274. void checkdisp_playmusic( void ) ;
  275. void checkdisp_stopmusic( void ) ;
  276. void checkdisp_eject( void ) ;
  277. void checkdisp_reset( void ) ;
  278. void checkstatus( void ) ;
  279. void selectmusic( int ) ;
  280. void selectmode( int ) ;
  281. void selectffrew( int ) ;
  282. void selectplay( int ) ;
  283. void selectstop( int ) ;
  284. void selectprogramsw( int ) ;
  285. void selectelevol( void ) ;
  286. void debugevent( int ) ;
  287. int event( void ) ;
  288. void start( void ) ;
  289.  
  290. /*
  291. **    CDPNDISP.C
  292. */
  293. void dispmouse( int ) ;
  294. void dispmsgclear( void ) ;
  295. void disperrormsg( int ) ;
  296. void disptitle( void ) ;
  297. void dispexit( int ) ;
  298. void dispprogramtime( void ) ;
  299. int disptimemouse( int ) ;
  300. void disptimeinfo( void ) ;
  301. void disptimeprgsw( void ) ;
  302. void disptimebox( void ) ;
  303. int disptimemusicno( int ) ;
  304. void disptimeclock( void ) ;
  305. void disptime( int,int ) ;
  306. void dispcheck( int,int ) ;
  307. void dispclear( int,int ) ;
  308. void dispshuffle( int ) ;
  309. void disprepeat( int ) ;
  310. void dispstop( int ) ;
  311. void dispplay( int ) ;
  312. void disprewmusic( int ) ;
  313. void disprewtime( int ) ;
  314. void disppause( int ) ;
  315. void dispfftime( int ) ;
  316. void dispffmusic( int ) ;
  317. void dispprogram( int ) ;
  318. void dispsingle( int ) ;
  319. void dispcontinue( int ) ;
  320. void dispelevolbox( int ) ;
  321. void dispelevol( void ) ;
  322. void dispword( void ) ;
  323. void dispswitch( void ) ;
  324. void dispselectmusicno( int ) ;
  325. void dispmusicno( int,int ) ;
  326. void dispswitch_check( int ) ;
  327. void dispevent( int,int ) ;
  328. void disptocclear( void ) ;
  329. void disptoc( char ) ;
  330. void disptocmode( int,int ) ;
  331.  
  332. #undef    EX
  333.